﻿Public Class Ansatt
    Inherits Person

    Public Property brukernavn As String
    Public Property passord As String
    Public Property rolle_selger As Integer
    Public Property rolle_lager As Integer
    Public Property rolle_admin As Integer

    'Public Shared innloggetBruker As Ansatt

    Public Sub New(ByVal innlestId As ULong)
        Dim sqlStreng As String
        sqlStreng = " SELECT * FROM person INNER JOIN ansatt ON person.personId = ansatt.ansattNr WHERE person.personId = '" & innlestId & "'"

        Dim tempTabell As DataTable
        tempTabell = Database.Query(sqlStreng)
        If tempTabell.Rows.Count = 1 Then                'sjekker om det ble ett (og ikke flere eller færre) treff i basen ved søk på id
            'Ansattklassen fylles med info kun hvis det finnes ett treff i basen
            Try
                id = innlestId
                fornavn = tempTabell.Rows(0).Item("personForNavn")
                etternavn = tempTabell.Rows(0).Item("personEtterNavn")
                adresse = tempTabell.Rows(0).Item("personAdresse")
                epost = tempTabell.Rows(0).Item("personEpost")
                mobil = tempTabell.Rows(0).Item("personMobilTlf")

                brukernavn = tempTabell.Rows(0).Item("brukerNavn")
                passord = tempTabell.Rows(0).Item("pwd")
                rolle_admin = tempTabell.Rows(0).Item("rettighetAdmin")
                rolle_selger = tempTabell.Rows(0).Item("rettighetSalg")
                rolle_lager = tempTabell.Rows(0).Item("rettighetLager")
                
            Catch ex As Exception
                MsgBox("Dette gikk feil fordi " & ex.Message)

            End Try
        End If
        'Hvis det er flere eller ingen treff fylles ikke klassen med noe info

        id = innlestId
    End Sub

    Public Sub New(ByVal innlestBrukernavn As String, ByVal innlestPassord As String)

        Dim sqlStreng As String
        sqlStreng = " SELECT * FROM person INNER JOIN ansatt ON person.personId = ansatt.ansattNr WHERE ansatt.brukerNavn = '" & innlestBrukernavn & "' AND ansatt.pwd ='" & innlestPassord & "';"

        Dim tempTabell As DataTable
        tempTabell = Database.Query(sqlStreng)
        If tempTabell.Rows.Count = 1 Then                'sjekker om det ble ett (og ikke flere eller færre) treff i basen ved søk på brukernavn/passord-kombinasjonen
            'Ansattklassen fylles med info kun hvis det finnes ett treff i basen
            Try
                id = tempTabell.Rows(0).Item("personId")
                fornavn = tempTabell.Rows(0).Item("personForNavn")
                etternavn = tempTabell.Rows(0).Item("personEtterNavn")
                adresse = tempTabell.Rows(0).Item("personAdresse")
                epost = tempTabell.Rows(0).Item("personEpost")
                mobil = tempTabell.Rows(0).Item("personMobilTlf")

                brukernavn = innlestBrukernavn
                passord = innlestPassord
                rolle_admin = tempTabell.Rows(0).Item("rettighetAdmin")
                rolle_selger = tempTabell.Rows(0).Item("rettighetSalg")
                rolle_lager = tempTabell.Rows(0).Item("rettighetLager")
                'Me.provisjonsFaktor = tempTabell.Rows(0).Item("provisjonsFaktor")
                'Me.erSjafor = tempTabell.Rows(0).Item("erSjafor")
            Catch ex As Exception
                MsgBox("Dette gikk feil fordi " & ex.Message)

            End Try
        End If
        'Hvis det er flere eller ingen treff fylles ikke klassen med noe info
    End Sub

    Public Sub New()

    End Sub

    Public Sub Lagre()

        Try
            Dim sql As String = "UPDATE person INNER JOIN ansatt ON person.personId = ansatt.ansattNr SET"
            sql = sql & " person.personForNavn ='" & fornavn
            sql = sql & "', person.personEtterNavn ='" & etternavn
            sql = sql & "', person.personAdresse ='" & adresse
            sql = sql & "', person.personEpost ='" & epost
            sql = sql & "', person.personMobilTlf ='" & mobil
            sql = sql & "', ansatt.brukerNavn ='" & brukernavn
            sql = sql & "', ansatt.pwd ='" & passord
            sql = sql & "', ansatt.rettighetAdmin ='" & rolle_admin
            sql = sql & "', ansatt.rettighetSalg ='" & rolle_selger
            sql = sql & "', ansatt.rettighetLager ='" & rolle_lager
            sql = sql & "'  WHERE person.personId = '" & id & "' "
            'MsgBox(sql)
            Database.Query(sql)
        Catch ex As Exception
            MsgBox("Dette gikk feil fordi " & ex.Message)
        End Try

    End Sub

    Public Sub LagreNy()

        Try
            Dim sql As String = "INSERT INTO person (personForNavn, personEtterNavn, personAdresse, personEpost, personMobilTlf) "
            sql = sql & "VALUES ('" & fornavn & "', '" & etternavn & "', '" & adresse & "', '" & epost & "', '" & mobil & "')"
            'Setter inn en ny rad i tabellen person, og fyller inn eventuelle felt som er fylt ut. 
            'MsgBox(sql)
            Database.Query(sql)

            Dim sql2 As String = "SELECT personId FROM person ORDER BY personId DESC LIMIT 1"
            'Søker opp personId som nettopp ble opprettet ved å sortere ut høyeste tall

            Dim sql3 As String = "INSERT INTO ansatt (ansattNr, brukerNavn, pwd, rettighetAdmin, rettighetSalg, rettighetLager)"
            sql3 = sql3 & "VALUES ('" & Database.Query(sql2).Rows(0).Item("personId").ToString & "', '" & brukernavn & "', '" & passord & "', '" & rolle_admin & "', '" & rolle_selger & "', '" & rolle_lager & "')"
            'Setter inn en ny rad i tabellen ansatt, og fyller inn eventuelle felt

            'MsgBox(sql3)
            Database.Query(sql3)
        Catch ex As Exception
            MsgBox("Dette gikk feil fordi " & ex.Message)

        End Try
        'MsgBox("TODO! Må implementeres ferdig")
    End Sub

    Public Function LoggInn() As Boolean

        If Form1.innloggetBruker.FulltNavn.Length = 1 Then    'Hvis klassen ikke ble fylt med noe info fra treff i basen vil FulltNavn være kun " " mellom fornavn og etternavn
            Return False
        Else
            Return True
        End If
    End Function

    Public Shared Function Finn(Optional ByVal fornavn As String = "", Optional ByVal etternavn As String = "", Optional ByVal adresse As String = "", Optional ByVal epost As String = "", Optional ByVal mobil As String = "") As DataTable

        Dim søkestreng As String = "SELECT * FROM person INNER JOIN ansatt ON person.personId = ansatt.ansattNr WHERE person.personForNavn LIKE '%"

        søkestreng = søkestreng & fornavn & "%' AND person.personEtterNavn LIKE '%"
        søkestreng = søkestreng & etternavn & "%' AND person.personAdresse LIKE '%"
        søkestreng = søkestreng & adresse & "%' AND person.personEpost LIKE '%"
        søkestreng = søkestreng & epost & "%' AND person.personMobilTlf LIKE '%"
        søkestreng = søkestreng & mobil & "%' "

        Dim ansattListe As New DataTable
        ansattListe = Database.Query(søkestreng)

        Return ansattListe

    End Function

    Public Shared Sub Selgerrapport(ByRef dgv)
        Dim sporring As String = "SELECT ansattNr AS Nr, personForNavn AS fornavn , personEtterNavn AS etternavn, COUNT(*) AS Antall_Salg, SUM(varesalgsBelop) AS SumKroner FROM varesalg, person"
        sporring &= " WHERE personId = ansattNr GROUP BY ansattNr"

        dgv.DataSource = Database.Query(sporring)

    End Sub


End Class
